const { DataTypes } = require('sequelize');
const sequelize = require('../db.js');
const Category = require('./category');
const User = require('./users');

const Content = sequelize.define('content', {
  id: {
    type: DataTypes.BIGINT(10),
    primaryKey: true,
    autoIncrement: true
  },
  title: {
    type: DataTypes.STRING,
    allowNull: false
  },
  description: {
    type: DataTypes.STRING,
    allowNull: false
  },
  content: {
    type: DataTypes.STRING,
    allowNull: false
  },
  // 阅读量
  views: {
    type: DataTypes.BIGINT(10),
    defaultValue: 0
  },
},{
  tableName: 'content'
});
// 关联分类表 一对多
Category.hasMany(Content); // 一个内容有分类
Content.belongsTo(Category); // 每个分类属于一个内容

// 关联用户表 一条内容对应一个作者，一个作者可以添加多个内容
User.hasMany(Content);
Content.belongsTo(User);

module.exports = Content;
/*
  分析：一对多 关联键在多的那一方的表中
  一指的是：category, 意思就是一个category可以对应多个内容(Content)
  多指的是：Content

  一对一：说明-->比如一个人person只能对应一台电脑，意思就是person不能再对应其他电脑，此台电脑也不能对应其他person，
         关联键添加到谁的表中都可以。

  多对多：说明-->一艘船可以由一名船员驾驶，此艘船也可以由其他船员驾驶，同时一名船员可以驾驶多种型号的船，多对多需要指定连接表
*/ 